#include <iostream>
#include <string>
#include <cstring>

int main()
{
    // 说明符(storage class specifier)和限定符(cv-qualifier)
    /*
        说明符:
        auto(在C++11中不再是说明符),register,static,extern,thread_local(C++11新增关键字),mutable

        限定符:
        const,volatile
    */

    // mutable关键字
    // 即使在结构或者类中的变量为const,其中的某个成员也可以被修改
    // 下面是例子:
    struct data
    {
        char name[30];
        mutable int access;
        // ....
    };
    
    const data veep = {"aquawius",20};
    strcpy("AQUAWIUS",veep.name);               // 不允许,运行时出现异常,因为veep为const变量,strcpy函数试图修改一个被const修饰的东西
    veep.access++;                              // 允许,veep.access虽然被const修饰,但是他是被mutable修饰的变量,可以更改

}